const express = require('express');
const router = express.Router();
const db = require('../../../../util/dbConfig/dbConfig')
const dateReplace = require('../../../../public/javascripts/timeFormat')
//单一添加
router.post('/single',async (req,res) => {
    //鉴权
    if(req.session.userInfo.admin === 1 || !req.session.userInfo) {
        return res.send({
            code: 3,
            msg: '您未登录或权限不够'
        })
    }
    //时间格式修改

    //接受参数
    let {
        sheepId,                        //羊只编号
        specimen,                       //样品编号
        diameter,                       //直径
        diameter_difference,            //直径标准差
        length,                         //长度
        length_length,                  //长度标准差
        length_codefficient,            //长度变异系数
        measurement_number,             //测量数
        measurement_date,               //测量日期
        remake,                         //备注
    } = req.body
    let date =  await dateReplace(measurement_date,res)
    let arr = [
        sheepId,                        //羊只编号
        specimen,                       //样品编号
        diameter,                       //直径
        diameter_difference,            //直径标准差
        length,                         //长度
        length_length,                  //长度标准差
        length_codefficient,            //长度变异系数
        measurement_number,             //测量数
        date,               //测量日期
        remake,                         //备注
    ]
    console.log(date);
    if(arr.length < 10){
        return res.send({
            code: 1,
            msg: '参数错误'
        })
    }
    try{
        let findSql = `select ID from sheep where ID=?`
        let findSqlArr = [sheepId]
        let findResult = await db.SySqlConnect(findSql,findSqlArr)
        if(findResult.length === 0){
            return res.send({
                code: 2,
                msg: '该羊不存在'
            })
        }
        //该羊存在
        let addSql = `insert into sheepftne (
             SHEEP_ID,
             SPECIMEN,
             DIAMETER,
             D_DIFFERENCE,
             LENGTH,
             L_DIFFERENCE,
             L_CODEFFICIENT,
             MEASUREMENT_NUMBER,
             MEASUREMENT_DATE,
             REMARK
        ) values(?,?,?,?,?,?,?,?,?,?)`
        let addResult = await db.SySqlConnect(addSql,arr)
        if(addResult.affectedRows === 1){
            return res.send({
                code: 0,
                msg: '添加成功'
            })
        }else{
            return res.send({
                code: 2,
                msg: '添加失败'
            })
        }
    }catch (e) {
        console.log(e);
        return res.send({
            code: 4,
            msg: '服务器错误，请稍后再试'
        })
    }
})


//excel批量录入
router.post('/batch',async (req,res) => {
    //鉴权
    if(req.session.userInfo.admin === 0 || !req.session.userInfo) {
        return res.send({
            code: 3,
            msg: '您未登录或权限不够'
        })
    }
    let arr = req.body
    arr = JSON.parse(arr)

    let containers = [] //存放 当前sql保存的数据的  容器 *只有一条数据
    let resultArr = []  //存放 sql保存数据 结果的状态，成功为1，失败为0
    let allContainers = [] //存放所有要保存的数据
    let result //定义保存 结果的状态


    //循环参数数组每一条数据
    for(let i =0; i< arr.length;i++){

        //迭代参数数组的每一条对象内的所有值
        for (let Key in arr[i]) {
            //将参数数组中的对象的值 保存到容器中
            if(Key === 'ID'){
                continue;
            }
             containers.push(arr[i][Key])
        }


        //定义每条数据的长度
        let index = Object.keys(arr[0]).length -1
        //index === 11

        console.log(containers);

        //如果容器的长度为两条数据的长度
        if(containers.length>=2*index){
            //使容器长度为一条数据长度，内容为后进入的最后一条数据
            console.log(containers);
            containers = containers.splice(index,2*index-1)
            console.log(containers);
        }


        let dateIndex = containers.length -2  //获取时间索引

        //时间格式修改
        let date = containers[dateIndex] + ''

        if(date.indexOf('T') !== -1 || date.indexOf('Z') !== -1 ){
            //T在Z不在，或者Z在T不在，或者T和Z都在
            if(date.indexOf('T') !== -1 && date.indexOf('Z') !== -1 ){
                //T和Z都在
                containers[dateIndex] = date.replace('T',' ').replace('Z',' ')
            }else{
                return res.send({
                    code: 1,
                    msg: '请填选正确日期格式'
                })
            }
        }


        console.log(containers);

        let sql =  `insert into sheepftne (SHEEP_ID,
             SPECIMEN,
             DIAMETER,
             D_DIFFERENCE,
             LENGTH,
             L_DIFFERENCE,
             L_CODEFFICIENT,
             MEASUREMENT_NUMBER,
             MEASUREMENT_DATE,
             REMARK) values(?,?,?,?,?,?,?,?,?,?)`

       db.sqlConnect(sql,containers,(err,data) =>{
            if (err){
                //如果报错，保存数据的结果状态为0，添加到状态保存容器
                    resultArr.push(0)
                    console.log(err);
                    return res.send({
                        code: 4,
                        msg: '服务器错误，请稍后再试'
                    })
            }
        })
        resultArr.push(1)
        allContainers.push(containers)
        // try{
        //     result = await db.SySqlConnect(sql,containers)
        // }catch (e) {
        //     //如果报错，保存数据的结果状态为0，添加到状态保存容器
        //     resultArr.push(0)
        //     console.log(e);
        //     return res.send({
        //         code: 4,
        //         msg: '服务器错误，请稍后再试'
        //     })
        // }

    }


    //循环结果数组，检查是否有失败项
    for (let j =resultArr.length-1;j>=0;j--){
        if(resultArr[j] !==1 ){
            return res.send({
                code: 2,
                msg: '添加错误，请检查表格是否正确'
            })
        }
    }


    //成功返回
    res.send({
        code: 0,
        msg: `添加成功${allContainers.length}条`,
        allContainers,  //成功添加的每一条数据
        resultArr       //每条数据的保存状态是否成功
    })
})


module.exports = router
